home *** CD-ROM | disk | FTP | other *** search
Wrap
ddddmmmmAAAACCCCGGGGeeeettttMMMMiiiinnnnIIIInnnnppppuuuuttttSSSSiiiizzzzeeee((((3333ddddmmmm)))) ddddmmmmAAAACCCCGGGGeeeettttMMMMiiiinnnnIIIInnnnppppuuuuttttSSSSiiiizzzzeeee((((3333ddddmmmm)))) NNNNAAAAMMMMEEEE dmACGetMinInputSize, dmACGetMinOutputSize - auxiliary routines for querying input and output buffer sizes for ddddmmmmAAAACCCCCCCCoooonnnnvvvveeeerrrrtttt. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS ####iiiinnnncccclllluuuuddddeeee <<<<ddddmmmmeeeeddddiiiiaaaa////ddddmmmm____aaaauuuuddddiiiiooooccccoooonnnnvvvveeeerrrrtttt....hhhh>>>> DDDDMMMMssssttttaaaattttuuuussss ddddmmmmAAAACCCCGGGGeeeettttMMMMiiiinnnnIIIInnnnppppuuuuttttSSSSiiiizzzzeeee(((( DDDDMMMMaaaauuuuddddiiiiooooccccoooonnnnvvvveeeerrrrtttteeeerrrr ccccoooonnnnvvvveeeerrrrtttteeeerrrr,,,, iiiinnnntttt oooouuuuttttppppuuuuttttSSSSiiiizzzzeeee,,,, iiiinnnntttt ****mmmmiiiinnnnIIIInnnnppppuuuuttttSSSSiiiizzzzeeee)))) DDDDMMMMssssttttaaaattttuuuussss ddddmmmmAAAACCCCGGGGeeeettttMMMMiiiinnnnOOOOuuuuttttppppuuuuttttSSSSiiiizzzzeeee(((( DDDDMMMMaaaauuuuddddiiiiooooccccoooonnnnvvvveeeerrrrtttteeeerrrr ccccoooonnnnvvvveeeerrrrtttteeeerrrr,,,, iiiinnnntttt iiiinnnnppppuuuuttttSSSSiiiizzzzeeee,,,, iiiinnnntttt ****mmmmiiiinnnnOOOOuuuuttttppppuuuuttttSSSSiiiizzzzeeee)))) PPPPAAAARRRRAAAAMMMMEEEETTTTEEEERRRRSSSS _c_o_n_v_e_r_t_e_r is a DDDDMMMMaaaauuuuddddiiiiooooccccoooonnnnvvvveeeerrrrtttteeeerrrr handle created by a previous call to the creation method ddddmmmmAAAACCCCCCCCrrrreeeeaaaatttteeee(3dm). _o_u_t_p_u_t_S_i_z_e is a integer set to the requested output buffer size. The units will be bytes if compressing, otherwise frames. _m_i_n_I_n_p_u_t_S_i_z_e is a pointer to integer which will be set to the minimum allowable input buffer size for the given _o_u_t_p_u_t_S_i_z_e. The units will be bytes if decompressing, otherwise frames. _i_n_p_u_t_S_i_z_e is a integer set to the requested input buffer size. The units will be bytes if decompressing, otherwise frames. _m_i_n_O_u_t_p_u_t_S_i_z_e is a pointer to integer which will be set to the minimum allowable output buffer size for the given _i_n_p_u_t_S_i_z_e. The units will be bytes if compressing, otherwise frames. RRRREEEETTTTUUUURRRRNNNNEEEEDDDD VVVVAAAALLLLUUUUEEEE Returns DDDDMMMM____SSSSUUUUCCCCCCCCEEEESSSSSSSS if the operation succeeds. If DDDDMMMM____FFFFAAAAIIIILLLLUUUURRRREEEE is returned, the error number and/or message can be retrieved via ddddmmmmGGGGeeeettttEEEErrrrrrrroooorrrr(3dm). DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN The handle passed to these routines is declared as follows: ttttyyyyppppeeeeddddeeeeffff ssssttttrrrruuuucccctttt ____DDDDMMMMaaaauuuuddddiiiiooooccccoooonnnnvvvveeeerrrrtttteeeerrrr ****DDDDMMMMaaaauuuuddddiiiiooooccccoooonnnnvvvveeeerrrrtttteeeerrrr;;;; ddddmmmmAAAACCCCGGGGeeeettttMMMMiiiinnnnIIIInnnnppppuuuuttttSSSSiiiizzzzeeee and ddddmmmmAAAACCCCGGGGeeeettttMMMMiiiinnnnOOOOuuuuttttppppuuuuttttSSSSiiiizzzzeeee are a faster way to query the value of the two audio conversion parameters DDDDMMMM____AAAAUUUUDDDDIIIIOOOO____MMMMIIIINNNN____IIIINNNNPPPPUUUUTTTT____LLLLEEEENNNN and DDDDMMMM____AAAAUUUUDDDDIIIIOOOO____MMMMIIIINNNN____OOOOUUUUTTTTPPPPUUUUTTTT____LLLLEEEENNNN. These values may also be retrieved via ddddmmmmAAAACCCCGGGGeeeettttPPPPaaaarrrraaaammmmssss(3dm) after a call to ddddmmmmAAAACCCCSSSSeeeettttPPPPaaaarrrraaaammmmssss(3dm) with the parameter DDDDMMMM____AAAAUUUUDDDDIIIIOOOO____MMMMAAAAXXXX____RRRREEEEQQQQUUUUEEEESSSSTTTT____LLLLEEEENNNN set to either the input or output size, depending on the conversion mode. PPPPaaaaggggeeee 1111 ddddmmmmAAAACCCCGGGGeeeettttMMMMiiiinnnnIIIInnnnppppuuuuttttSSSSiiiizzzzeeee((((3333ddddmmmm)))) ddddmmmmAAAACCCCGGGGeeeettttMMMMiiiinnnnIIIInnnnppppuuuuttttSSSSiiiizzzzeeee((((3333ddddmmmm)))) NNNNOOOOTTTTEEEE Only one of these two routines will be valid for any given configuration of the audio converter handle -- more specifically, dependent on the value of DDDDMMMM____AAAAUUUUDDDDIIIIOOOO____PPPPRRRROOOOCCCCEEEESSSSSSSS____MMMMOOOODDDDEEEE. A fixed input size indicates the converter is running in DDDDMMMM____AAAAUUUUDDDDIIIIOOOO____PPPPRRRROOOOCCCCEEEESSSSSSSS____PPPPUUUUSSSSHHHH mode; a fixed output size similarly indicates DDDDMMMM____AAAAUUUUDDDDIIIIOOOO____PPPPRRRROOOOCCCCEEEESSSSSSSS____PPPPUUUULLLLLLLL mode. A call to the opposite routine will return DDDDMMMM____FFFFAAAAIIIILLLLUUUURRRREEEE, and the error value will be set to DDDDMMMM____AAAAUUUUDDDDIIIIOOOO____BBBBAAAADDDD____RRRREEEEQQQQUUUUEEEESSSSTTTT. Typically, buffer sizes only need be set and queried if the audio data is being compressed, decompressed, or rate-converted. In all other cases, the output buffer length (in frames) will and must equal the input length. EEEEXXXXAAAAMMMMPPPPLLLLEEEE If an application wishes to compress blocks of data to be written to a file or a device, the sequence might look like this (error checking has been omitted for brevity): #include <dmedia/dm_params.h> #include <dmedia/dm_audioconvert.h> DMaudioconverter converter; DMparams *inputParams, *outputParams; /* create the parameter lists and the converter */ dmParamsCreate(&inputParams); dmParamsCreate(&outputParams); dmACCreate(&converter); /* set up input params for 16bit, mono, 44.1K */ dmSetAudioDefaults(inputParams, 16, 44100, 1); /* set up output params for GSM compression */ dmSetAudioDefaults(outputParams, 16, 44100, 1); dmParamsSetString(params, DM_AUDIO_COMPRESSION, DM_AUDIO_GSM); /* configure the converter */ dmACSetParams(converter, inputParams, outputParams); /* loop forever, compressing data from some buffer */ while(1) { int inputFrames; /* app sets this */ int outputBytes; /* and queries for this */ void *inBuffer = getInputBuffer(&inputFrames); void *outBuffer; /* do the query */ ddddmmmmAAAACCCCGGGGeeeettttMMMMiiiinnnnOOOOuuuuttttppppuuuuttttSSSSiiiizzzzeeee((((ccccoooonnnnvvvveeeerrrrtttteeeerrrr,,,, iiiinnnnppppuuuuttttFFFFrrrraaaammmmeeeessss,,,, &&&&oooouuuuttttppppuuuuttttBBBByyyytttteeeessss)))); /* then perhaps the output buffer will be dynamically alloc'd */ outBuffer = getLargeEnoughOutBuffer(outputBytes); PPPPaaaaggggeeee 2222 ddddmmmmAAAACCCCGGGGeeeettttMMMMiiiinnnnIIIInnnnppppuuuuttttSSSSiiiizzzzeeee((((3333ddddmmmm)))) ddddmmmmAAAACCCCGGGGeeeettttMMMMiiiinnnnIIIInnnnppppuuuuttttSSSSiiiizzzzeeee((((3333ddddmmmm)))) /* now we can compress our data into that buffer safely */ dmACConvert(converter, inBuffer, outBuffer, &inputFrames, &outputBytes); ... } SSSSEEEEEEEE AAAALLLLSSSSOOOO dmACCreate(3dm), dmACSetParams(3dm), dmACGetParams(3dm), dmACConvert(3dm), dmACReset(3dm), dmACDestroy(3dm), PPPPaaaaggggeeee 3333